www.gusucode.com > 有监督的 CNN 网络完成对MNIST 数字的识别 > 有监督的 CNN 网络完成对MNIST 数字的识别/CNN—卷积神经网络数字识别/readMNIST.m

    function [I,labels,I_test,labels_test] = readMNIST(num)

% readMNIST 阅读MNIST handwriten图像数据库。
%
%语法
%
% [I,labels,I_test,labels_test] = readMNIST(num)
%
%描述
%输入:
% id - 28 x28图像大小的单元阵列
% n -图像处理的数量
% -单元阵列的标签,标签对应于图像
% rand_on——参数,如果有必要定义随机选择一个对图像/标签
%输出:
% I -- 28 x28训练图像大小的单元阵列
%标签——向量训练集的标签(真正的数字)
% I_test - -28 x28单元阵列的测试图像的大小
% labels_test -向量的标签(真正的数字)为测试设置

% = = = = = = = = = = =加载训练集


%检查MNIST数据集
addpath('C:\Users\faschou\Desktop\CNN\CNN—卷积神经网络数字识别\MNIST');%MNIST数据及其读取程序所在的目录
path =' .\MNIST\train-images.idx3-ubyte';
if(~exist(path,'file'))
    error('训练集的MNIST不见了。请从http://yann.lecun.com/exdb/mnist/下载它和投入./ MNIST文件夹');
end
fid = fopen(path,'r','b');  %大端法(就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。)
magicNum = fread(fid,1,'int32');    % 幻数
if(magicNum~=2051) 
    display('Error: cant find magic number');
    return;
end
imgNum = fread(fid,1,'int32');  %图片的数量
rowSz = fread(fid,1,'int32');   %Image height
colSz = fread(fid,1,'int32');   %Image width

if(num<imgNum) 
    imgNum=num; 
end

for k=1:imgNum
    I{k} = uint8(fread(fid,[rowSz colSz],'uchar'));
end
fclose(fid);

%============载入labels
path = './MNIST/train-labels.idx1-ubyte';
if(~exist(path,'file'))
    error('Training labels of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder');
end
fid = fopen(path,'r','b');  %大端法
magicNum = fread(fid,1,'int32');    %幻数
if(magicNum~=2049) 
    display('Error: cant find magic number');
    return;
end
itmNum = fread(fid,1,'int32');  %标签的数量

if(num<itmNum) 
    itmNum=num; 
end

labels = uint8(fread(fid,itmNum,'uint8'));   %载入所有标签

fclose(fid);

%============所有相同的测试集
path = './MNIST/t10k-images.idx';
if(~exist(path,'file'))
    error('Test images of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder');
end

fid = fopen(path,'r','b');  
magicNum = fread(fid,1,'int32');    
if(magicNum~=2051) 
    display('Error: cant find magic number');
    return;
end
imgNum = fread(fid,1,'int32');  
rowSz = fread(fid,1,'int32');   
colSz = fread(fid,1,'int32');   

if(num<imgNum) 
    imgNum=num; 
end

for k=1:imgNum
    I_test{k} = uint8(fread(fid,[rowSz colSz],'uchar'));
end
fclose(fid);

%============测试标签
path = './MNIST/t10k-labels.idx1-ubyte';
if(~exist(path,'file'))
    error('Test labels of MNIST not found. Please download it from http://yann.lecun.com/exdb/mnist/ and put to ./MNIST folder');
end

fid = fopen(path,'r','b');  
magicNum = fread(fid,1,'int32');    
if(magicNum~=2049) 
    display('Error: cant find magic number');
    return;
end
itmNum = fread(fid,1,'int32');  
if(num<itmNum) 
    itmNum=num; 
end
labels_test = uint8(fread(fid,itmNum,'uint8'));   

fclose(fid);